package com.yotouch.app.stake.hsf;

import com.yotouch.app.stake.model.Charger;
import com.yotouch.app.stake.model.response.ResponseBase;
import com.yotouch.app.stake.model.response.ResponseBoolean;
import com.yotouch.app.stake.model.response.ResponseCharger;
import com.yotouch.app.stake.model.response.ResponseChargerList;
import com.yotouch.app.stake.model.response.ResponseInt;

public interface ChargerService {

    /**
     * 统计国网枪数据
     *
     * @return
     */
    ResponseInt sgccTotalCount() ;

    /**
     * 获取国网枪数据
     *
     * @param offset
     * @param limit
     * @return
     */
    ResponseChargerList sgccCharger(int offset, int limit) ;

    /**
     * 根据桩编号查询所有枪
     *
     * @param stakeNo
     * @return
     */
    ResponseChargerList listByStakeNo(String stakeNo) ;

    /**
     * 统计充电枪数量
     * @return
     */
    ResponseInt totalCount();

    /**
     * 分页获取充电枪数据
     * @param offset
     * @param limit
     * @return
     */
    ResponseChargerList list(int offset, int limit);

    /**
     * 根据充电站uuid统计充电枪数量
     * @param stationUuid
     * @return
     */
    ResponseInt countByStation(String stationUuid);

    /**
     * 获取充电站⾥充电抢数据
     * @param stationUuid
     * @param offset
     * @param limit
     * @return
     */
    ResponseChargerList listByStation(String stationUuid, int offset, int limit);

    /**
     * 统计计费模型⾥充电抢数量  -- TODO 待确认该接口是否使用
     * @param measureModel
     * @return
     */
    ResponseInt countByMeasureModel(String measureModel);

    /**
     * 根据计费模型uuid分⻚获取充电枪数据 -- TODO 待确认该接口是否使用
     * @param measureModel
     * @param offset
     * @param limit
     * @return
     */
    ResponseChargerList listByMeasureModel(String measureModel, int offset, int limit);

    /**
     * 统计充电站计费模型⾥充电抢数量 -- TODO 待确认该接口是否使用
     * @param stationUuid
     * @param measureModel
     * @return
     */
    ResponseInt countByStationAndMeasureModel(String stationUuid, String measureModel);

    /**
     * 获取充电站计费模型⾥充电抢数据 -- TODO 待确认该接口是否使用
     * @param stationUuid
     * @param measureModel
     * @param offset
     * @param limit
     * @return
     */
    ResponseChargerList listByStationAndMeasureModel(String stationUuid, String measureModel, int offset, int limit);

    /**
     * 统计⻋位下充电枪数量
     * @param parkingUuid
     * @return
     */
    ResponseInt countByParking(String parkingUuid);

    /**
     * 获取⻋位下充电枪数据
     * @param parkingUuid
     * @param offset
     * @param limit
     * @return
     */
    ResponseChargerList listByParking(String parkingUuid, int offset, int limit);

    /**
     * 根据uudi获取⼀个枪
     * @param uuid
     * @return
     */
    ResponseCharger get(String uuid);

    /**
     * 根据 输⼊桩编号 和充电抢编码获取⼀个充电枪
     * @param equipId
     * @param chargerNo
     * @return
     */
    ResponseCharger get(String equipId, String chargerNo);

    /**
     * 修改⼀个充电枪
     * @param charger
     * @return
     */
    ResponseBase set(Charger charger);

    /**
     * 根据停车区获取充电枪列表
     *
     * @param parkingAreaUuid
     * @return
     */
    ResponseChargerList listByParkingArea(String parkingAreaUuid) ;

    /**
     * 手动同步枪数据到redis，可以废弃
     * @param offset
     * @param limit
     * @return
     */
    boolean initChargerInRedis(int offset, int limit);

    /**
     * 注册检验：输入桩编号、注册码、授权码、枪编码，返回是否是一个正常的数据
     */
    ResponseBoolean checkRegister(String equipId, String registerCode, String authCode, String chargerNo);

}